package q206_reverseList;

import CommonClass.Common.ListNode;

public class Solution_1 {
    public static void main(String[] args) {

    }

    public ListNode reverseList(ListNode head) {
        if((head == null) || (head.next == null)){
            return head;
        }
        // 先创建一个额外头节点，用来接受每一次更换节点的头节点
        ListNode StarNode = new ListNode(0);
        // 先让一个temp指向链表头节点
        ListNode temp = head;

        // 第一次操作， 就是要将 1-2-3 这样的链表转换为 2-1-3
        ListNode a = temp.next;
        temp.next = a.next;
        a.next = temp;
        StarNode.next = a;
        // 然后每一次temp.next指向的都是后面的一个节点，只要不为空就要不停的换
        while(temp.next != null){
            ListNode b = temp.next;
            temp.next = b.next;
            b.next = StarNode.next;
            StarNode.next = b;
        }

        return StarNode.next;
    }
}
